package com.zzyl.utils;

import org.mindrot.jbcrypt.BCrypt;

public class PasswordUtils {

    /**
     * 加密密码
     * @param plainPassword 明文密码
     * @return BCrypt 哈希值
     */
    public static String encryptPassword(String plainPassword) {
        // 自动生成盐值并加密（默认强度10）
        return BCrypt.hashpw(plainPassword, BCrypt.gensalt());
    }

    /**
     * 验证密码
     * @param plainPassword 用户输入的密码
     * @param hashedPassword 存储的哈希密码
     * @return 匹配返回 true，否则 false
     */
    public static boolean verifyPassword(String plainPassword, String hashedPassword) {
        return BCrypt.checkpw(plainPassword, hashedPassword);
    }

    /**
     * 自定义加密强度
     * @param plainPassword 明文密码
     * @param strength 强度因子 (4-31)
     * @return BCrypt 哈希值
     */
    public static String encryptWithStrength(String plainPassword, int strength) {
        return BCrypt.hashpw(plainPassword, BCrypt.gensalt(strength));
    }

//    public static void main(String[] args) {
//        // 示例用法
//        String password = "mySecret123";
//
//        // 加密
//        String hashed = encryptPassword(password);
//        System.out.println("加密结果: " + hashed);
//        // 示例输出: $2a$10$sdfKJw9u8asdfLKJ2sdf8u.sdfu2sdfKJHsdf
//
//        // 验证
//        boolean isValid = verifyPassword("mySecret123", hashed);
//        System.out.println("密码验证: " + isValid); // true
//
//        isValid = verifyPassword("wrongPassword", hashed);
//        System.out.println("错误密码验证: " + isValid); // false
//
//        // 高强度加密
//        String strongHash = encryptWithStrength(password, 12);
//        System.out.println("高强度加密: " + strongHash);
//    }
}